// 题目描述

// 某通信网络中有N个网络结点，用1到N进行标识。
// 网络中的结点互联互通，且结点之间的消息传递有时延，相连结点的时延均为一个时间单位。
// 现给定网络结点的连接关系link[i]={u，v}，其中u和v表示网络结点。
// 当指定一个结点向其他结点进行广播，所有被广播结点收到消息后都会在原路径上回复一条响应消息
// ，请计算发送结点至少需要等待几个时间单位才能收到所有被广播结点的响应消息。
// 注：
// N的取值范围为[1，100];
// 连接关系link的长度不超过3000，且1 <= u,v <= N;
// 网络中任意结点间均是可达的;
// 输入描述：
// 输入的第一行为两个正整数，分别表示网络结点的个数N，以及时延列表的长度T；
// 接下来的T行输入，表示结点间的连接关系列表；
// 最后一行的输入为一个正整数，表示指定的广播结点序号；
// 输出描述：
// 输出一个整数，表示发送结点接收到所有响应消息至少需要等待的时长。
// 5 7
// 2 1

// 1 4

// 2 4

// 2 3

// 3 4

// 3 5

// 4 5

// 2

// 输出

// 4

// 说明

// 2到5的最小时延是2个时间单位，
// 而2到其他结点的最小时延是1个时间单位，所以2收到所有结点的最大响应时间为2*2=4。
const calcTls = (local, count, mark, distance, arr) => {
    mark[local] = true;
    for (let i = 1; i <= count; i++) {
        if (arr[local][i] != 0) {
            distance[i] = arr[local][i];
        }
    }
    let used = 0;
    while (used < count) {
        let tempLocal = 0;
        let distMin = Number.MAX_SAFE_INTEGER;
        for (let i = 1; i <= count; i++) {
            if (!mark[i] && distance[i] < distMin) {
                distMin = distance[i];
                tempLocal = i;
            }
        }
        
        
        //  = tempLocal;
        mark[local] = true;
        for (let i = 1; i <= count; i++) {
            if (arr[local][i] != 0) {
                distance[i] = Math.min(distance[local] + arr[local][i], distance[i]);
            }
        }
        used++;
    }
    let maxDis = Number.MIN_SAFE_INTEGER;
    for (let i = 1; i <= count; i++) {
        maxDis = Math.max(maxDis, distance[i]);
    }
    console.log(maxDis)
}

function calculateLongdistance(n, t, arr, origin) {
    const matrix = Array.from(Array(n + 1), () => new Array(n + 1).fill(0))
    arr.forEach((item) => {
        let [x, y] = item.split(" ");
        x = parseInt(x)
        y = parseInt(y)
        matrix[x][y] = 1
    })
    let distance = Array.from(Array(n + 1))
    for (let i = 0; i <= n; i++) {
        if (i == origin) {
            distance[i] = 0;
        } else {
            distance[i] = Number.MAX_SAFE_INTEGER;
        }
    }
    console.log(matrix)
    let mark = Array.from(Array(n + 1), () => false);
    calcTls(origin, n, mark, distance, matrix);
}
calculateLongdistance(5, 7, ['2 1', '1 4', '2 4', '2 3', '3 4', '3 5', '4 5'], 2)